Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

577
Visualizações
Angular Workspace/Monorepo, forRoot me da errores. "Un valor para 'forRoot' no se puede determinar de forma estática, ya que es una declaración externa".

Tengo una biblioteca llamada Themex.

 //envInjector.ts import {InjectionToken} from "@angular/core"; export const ENVIRONMENT = new InjectionToken<{[key: string]: any}>('ENVIRONMENT');

//themex.módulo.ts

 import {ENVIRONMENT} from "./envInjector"; @NgModule({ declarations: [ ThemexComponent, ModalComponent, UploadComponent, AlertComponent, ], imports: [ CommonModule ], exports: [ ThemexComponent, ModalComponent, UploadComponent, AlertComponent, ], providers: [] }) export class ThemexModule { static forRoot(config: {[key: string]: any}): ModuleWithProviders<any> { return { ngModule: ThemexModule, providers: [ { provide: ENVIRONMENT, useValue: config } ] }; } }

La biblioteca se importa a un proyecto angular dentro del mismo espacio de trabajo angular.

 import {ThemexModule} from "themex";

Si lo estoy importando como se indicó anteriormente, aparece un error.

"Un valor para 'forRoot' no se puede determinar de forma estática, ya que es una declaración externa".

Sin embargo, si lo estoy importando como se indica a continuación, todo parece funcionar.

 import {ThemexModule} from "../../../themex/src/lib/themex.module";

Estoy usando

 Angular CLI: 12.0.5 Node: 14.16.1

Mis opciones del compilador. tsConfig.json ingrese la descripción de la imagen aquí

Todos los errores son cuando estoy haciendo un ng serve . No he probado a construir.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

He tenido este problema los últimos días, y creo que he encontrado la solución. Para mí, ocurrió cuando estaba actualizando las dependencias de algunas de nuestras bibliotecas desde Angular 10.

Nuestra solución fue asegurarnos de que el tipo de retorno ModuleWithProviders estuviera fuertemente tipado para el módulo, así que en su caso:

 export class ThemexModule { static forRoot(config: {[key: string]: any}): ModuleWithProviders<ThemexModule> { [...] }
over 4 years ago · Santiago Trujillo Relatório

0

¡Correcto! Proporcionar la firma es must especialmente si / cuando la bandera Ivy está encendida, total o parcialmente.

Si no tiene forRoot() o forChild() , no necesita preocuparse por ModuleWithProviders . Si lo hace, devuelva el tipo.

Esto es para cuando la biblioteca publicable se envía a npm y otros la incorporan.

 export class SomeModuleModule { static forRoot(...): ModuleWithProviders<SomeModuleModule> {...} }
 { "angularCompilerOptions": { "enableIvy": true, "compilationMode": "partial" } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda